
#ifndef _BSP_KEY_H
#define _BSP_KEY_H

#ifdef __cplusplus
extern "C" {
#endif

#define BSP_KEY_POWER_PORT                        GPIOA
#define BSP_KEY_POWER_PIN                         GPIO_PIN_5
#define BSP_KEY_POWER_CLKENABLE()                 __HAL_RCC_GPIOA_CLK_ENABLE()
#define BSP_KEY_POWER_FUN                         GPIO_AF_MODE_0
#define BSP_KEY_POWER()                           ((HAL_GPIO_ReadPin(BSP_KEY_POWER_PORT,BSP_KEY_POWER_PIN)==GPIO_PIN_SET)?1:0)



#define BSP_KEY_ROW1_PORT                          GPIOC
#define BSP_KEY_ROW1_PIN                           GPIO_PIN_6
#define BSP_KEY_ROW1_CLKENABLE()                   __HAL_RCC_GPIOC_CLK_ENABLE()
#define BSP_KEY_ROW1_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_ROW1()                             ((HAL_GPIO_ReadPin(BSP_KEY_ROW1_PORT,BSP_KEY_ROW1_PIN)==GPIO_PIN_SET)?1:0)
#define BSP_KEY_ROW1_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_ROW1_PORT,BSP_KEY_ROW1_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_ROW2_PORT                          GPIOC
#define BSP_KEY_ROW2_PIN                           GPIO_PIN_5
#define BSP_KEY_ROW2_CLKENABLE()                   __HAL_RCC_GPIOC_CLK_ENABLE()
#define BSP_KEY_ROW2_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_ROW2()                             ((HAL_GPIO_ReadPin(BSP_KEY_ROW2_PORT,BSP_KEY_ROW2_PIN)==GPIO_PIN_SET)?1:0)
#define BSP_KEY_ROW2_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_ROW2_PORT,BSP_KEY_ROW2_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_ROW3_PORT                          GPIOA
#define BSP_KEY_ROW3_PIN                           GPIO_PIN_10
#define BSP_KEY_ROW3_CLKENABLE()                   __HAL_RCC_GPIOA_CLK_ENABLE()
#define BSP_KEY_ROW3_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_ROW3()                             ((HAL_GPIO_ReadPin(BSP_KEY_ROW3_PORT,BSP_KEY_ROW3_PIN)==GPIO_PIN_SET)?1:0)
#define BSP_KEY_ROW3_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_ROW3_PORT,BSP_KEY_ROW3_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)


#define BSP_KEY_ROW4_PORT                          GPIOA
#define BSP_KEY_ROW4_PIN                           GPIO_PIN_9
#define BSP_KEY_ROW4_CLKENABLE()                   __HAL_RCC_GPIOA_CLK_ENABLE()
#define BSP_KEY_ROW4_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_ROW4()                             ((HAL_GPIO_ReadPin(BSP_KEY_ROW4_PORT,BSP_KEY_ROW4_PIN)==GPIO_PIN_SET)?1:0)
#define BSP_KEY_ROW4_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_ROW4_PORT,BSP_KEY_ROW4_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_COL1_PORT                          GPIOA
#define BSP_KEY_COL1_PIN                           GPIO_PIN_8
#define BSP_KEY_COL1_CLKENABLE()                   __HAL_RCC_GPIOA_CLK_ENABLE()
#define BSP_KEY_COL1_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_COL1_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_COL1_PORT,BSP_KEY_COL1_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_COL2_PORT                          GPIOB
#define BSP_KEY_COL2_PIN                           GPIO_PIN_15
#define BSP_KEY_COL2_CLKENABLE()                   __HAL_RCC_GPIOB_CLK_ENABLE()
#define BSP_KEY_COL2_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_COL2_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_COL2_PORT,BSP_KEY_COL2_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_COL3_PORT                          GPIOB
#define BSP_KEY_COL3_PIN                           GPIO_PIN_14
#define BSP_KEY_COL3_CLKENABLE()                   __HAL_RCC_GPIOB_CLK_ENABLE()
#define BSP_KEY_COL3_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_COL3_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_COL3_PORT,BSP_KEY_COL3_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_COL4_PORT                          GPIOB
#define BSP_KEY_COL4_PIN                           GPIO_PIN_13
#define BSP_KEY_COL4_CLKENABLE()                   __HAL_RCC_GPIOB_CLK_ENABLE()
#define BSP_KEY_COL4_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_COL4_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_COL4_PORT,BSP_KEY_COL4_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)

#define BSP_KEY_COL5_PORT                          GPIOB
#define BSP_KEY_COL5_PIN                           GPIO_PIN_12
#define BSP_KEY_COL5_CLKENABLE()                   __HAL_RCC_GPIOB_CLK_ENABLE()
#define BSP_KEY_COL5_FUN                           GPIO_AF_MODE_0
#define BSP_KEY_COL5_OUT(X)                        HAL_GPIO_WritePin(BSP_KEY_COL5_PORT,BSP_KEY_COL5_PIN,(X == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET)




#ifdef __cplusplus
}
#endif
void bsp_key_init(void);
uint32_t bsp_key_read(void);
#endif /* __ZB32L03x_STARTERKIT_H */


